home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 1 / Gekikoh Dennoh Club Vol. 1 (Japan).7z / Gekikoh Dennoh Club Vol. 1 (Japan) (Track 1).bin / kowin / archive / apl / tvv132.lzh / key.c next >
C/C++ Source or Header  |  1995-02-24  |  3KB  |  146 lines

  1. /*
  2.     MicroView.win Copyright 1995 小笠原博之
  3.     SPS-NET: SPS0783 COR. / oga@dgw.yz.yamagata-u.ac.jp
  4. */
  5.  
  6. #include    "microview.h"
  7.  
  8. #define        DX    (bp->font_x*8)    /*32*/
  9.  
  10. #define        Ctrl(a)    ((a)&0x1f)
  11. #define        Esc(a)    ((a)|0x100)
  12.  
  13. void
  14. KeyExec( info, bp )
  15. EventInfo    *info;
  16. T_BUFP        *bp;
  17. {
  18.     int        x= HS_WindowGetViewSizeX(bp->awp),
  19.             y= HS_WindowGetViewSizeY(bp->awp);
  20.     static int    escflag= FALSE;
  21.     unsigned int    code= info->KeyCode;
  22.  
  23.     if( y >= 24 )
  24.         y-= 24;
  25.  
  26.     if( escflag ){
  27.         if( code >= 'A' && code <= 'Z' )
  28.             code |= 0x20;        /* to lower */
  29.         code |= 0x100;
  30.         escflag= FALSE;
  31.     }
  32.  
  33.     switch( code ){
  34. /* 1 line scroll up */
  35.     case '1':
  36.     case 'J':
  37.     case 'N':
  38.     case Ctrl('m'):
  39.     case Ctrl('j'):
  40.         WindowScroll( bp->bwp, 0, bp->font_z );
  41.         break;
  42. /* 1 line scroll down */
  43.     case '7':
  44.     case 'P':
  45.     case 'K':
  46.     case Ctrl('k'):
  47.         WindowScroll( bp->bwp, 0, -bp->font_z );
  48.         break;
  49. /* 1 dot scroll up */
  50.     case '3':
  51.         WindowScroll( bp->bwp, 0, 1 );
  52.         break;
  53. /* 1 dot scroll down */
  54.     case '9':
  55.         WindowScroll( bp->bwp, 0, -1 );
  56.         break;
  57. /* scroll up */
  58.     case '2':
  59.     case Ctrl('x'):
  60.     case Ctrl('n'):
  61.     case FuncKeyDown:
  62.     case 'j':
  63.         WindowScroll( bp->bwp, 0, bp->font_z*3 );
  64.         break;
  65. /* scroll down */
  66.     case '8':
  67.     case Ctrl('p'):
  68.     case Ctrl('e'):
  69.     case 'p':
  70.     case FuncKeyUp:
  71.     case 'k':
  72.         WindowScroll( bp->bwp, 0, -bp->font_z*3 );
  73.         break;
  74. /* scroll right */
  75.     case '6':
  76.     case FuncKeyRight:
  77.     case 'l':
  78.         WindowScroll( bp->bwp, DX, 0 );
  79.         break;
  80. /* scroll left */
  81.     case '4':
  82.     case FuncKeyLeft:
  83.     case 'h':
  84.         WindowScroll( bp->bwp, -DX, 0 );
  85.         break;
  86. /* exchange top for bottom */
  87.     case FuncKeyClr:
  88.     case FuncKeyHome:
  89.     case 'G':
  90.         if( !HS_WindowGetHomeY(bp->bwp) )
  91.             goto    bottom;
  92. /* top of file */
  93.     case Esc('<'):
  94.     case '<':
  95.     case FuncKey+1:
  96.         WindowScroll( bp->bwp, 0, -bp->line*bp->font_z);
  97.         break;
  98. /* bottom of file */
  99.     bottom:
  100.     case Esc('>'):
  101.     case '>':
  102.     case FuncKey+2:
  103.         WindowScroll( bp->bwp, 0, bp->line*bp->font_z );
  104.         break;
  105. /* next page */
  106.     case '=':
  107.     case 'f':
  108.     case Ctrl('f'):
  109.     case Ctrl('v'):
  110.     case Ctrl('c'):
  111.     case FuncKeyRollUp:
  112.     case ' ':
  113.         WindowScroll( bp->bwp, 0, y );
  114.         break;
  115. /* back page */
  116.     case '+':
  117.     case Esc('v'):
  118.     case Ctrl('b'):
  119.     case Ctrl('r'):
  120.     case Ctrl('z'):
  121.     case Ctrl('h'):
  122.     case 'b':
  123.     case FuncKeyRollDown:
  124.         WindowScroll( bp->bwp, 0, -y );
  125.         break;
  126. /* half page */
  127.     case Ctrl('u'):
  128.         WindowScroll( bp->bwp, 0, -y/2 );
  129.         break;
  130.     case Ctrl('d'):
  131.         WindowScroll( bp->bwp, 0, y/2 );
  132.         break;
  133. /* Meta */
  134.     case ':':
  135.     case Ctrl('['):    /* ESC */
  136.         escflag= TRUE;
  137.         break;
  138. /* exit */
  139.     case Esc('q'):
  140.     case Esc('e'):
  141.     case FuncKey+10:
  142.     case FuncKeyDel:
  143.         WindowSendSignal( WindowProcessID, SignalKill, 0 );
  144.     }
  145. }
  146.